package com.lj.demo.interceptor.impl;

import com.lj.demo.interceptor.Interceptor;
import com.lj.demo.invocation.Invocation;

import java.lang.reflect.InvocationTargetException;

/**
 * Title: AopInterceoptor拦截器
 * Description:
 * Date: 2019年07月17日 16:19
 * @author lvjie
 * @version 1.0
 * Significant Modify：
 * Date                  Author                 Content
 * =================================================================
 * 2019年07月17日         lvjie      创建文件,实现基本功能
 * =================================================================
 */
public class AopInterceptor implements Interceptor {

    @Override
    public boolean before() {
        System.out.println("事前执行方法");
        return true;
    }

    @Override
    public void after() {
        System.out.println("事后执行方法");
    }

    @Override
    public Object around(Invocation invocation) throws InvocationTargetException, IllegalAccessException {
        System.out.println("执行目标对象方法前执行。。。");
        Object result =  invocation.proceed();
        System.out.println("执行目标对象方法完成。。。");
        return result;
    }

    @Override
    public boolean isUseAround() {
        //使用around替代目标对象方法
        return true;
    }

    @Override
    public void afterReturn() {
        System.out.println("执行完成，没有异常");
    }

    @Override
    public void afterThrowing() {
        System.out.println("执行完成，抛出异常");
    }
}
